package model

import (
	"gorm.io/gorm"
	"shop-api/databases/mysql"
	"time"
)

type UserCoupon struct {
	Base
	UserID     uint       `gorm:"index;not null" json:"user_id"`   // 用户ID（关联用户表）
	CouponID   uint       `gorm:"index;not null" json:"coupon_id"` // 优惠券ID（关联优惠券表）
	Status     string     `gorm:"not null" json:"status"`          // 状态: "unused"（未使用）, "used"（已使用）, "expired"（已过期）
	UsedAt     *time.Time `json:"used_at"`                         // 使用时间（未使用则为空）
	ReceivedAt time.Time  `gorm:"not null" json:"received_at"`     // 领取时间
	ValidFrom  time.Time  `gorm:"not null" json:"valid_from"`      // 生效时间
	ValidTo    time.Time  `gorm:"not null" json:"valid_to"`        // 过期时间
}

func (m *UserCoupon) GetCoupon(id uint) (*UserCoupon, error) {
	return m, mysql.WithClient(func(db *gorm.DB) error {
		return db.Where("id = ?", id).First(&m).Error
	})
}
